In general, programmers seek the most efficient way to execute their code, whether the code is executed using an interpreter, compiler, or both. An interpreter is a program that is capable of executing source code. A compiler transforms the source code into another form, such as machine code, which is then executed. When the code is transformed, an interpreter is often not required for execution. Each choice has advantages and disadvantages.